iT邦幫忙

2022 iThome 鐵人賽

DAY 17
0
AI & Data

菜鳥工程師第一個電腦視覺(CV)專案-農作物影像辨識競賽系列 第 17

D17-影像識別經典模型簡介2nd_ResNet

  • 分享至 

  • xImage
  •  

Part0:前言

經過昨天統整後,今天在思考要使用哪幾個Pytorch 預訓練模型(pretrained model)做為該影像分類競賽的訓練模型。目前已經有介紹Alexnet,今天將先統整網路上各模型的資訊和Pytorch官方有提供的預訓練模型,決定後續要選哪兩個模型來介紹並進行後續實作(transfer learning from pretrained models)。


Part1:今日目標

1.比較著名的影像辨識模型
2.ResNet解決的問題
3.ResNet模型介紹


Part2:內容

1.比較著名的影像辨識模型

為了選擇後續要實作的影像辨識模型,將同時比較各個模型預測表現和Pytorch有提供的預訓練模型清單,將於以下說明:

(1)影像辨識模型預測表現(ImageNet dataset)


圖片來源

(2)Pytorch官方提供影像分類預訓練模型清單:


圖片來源

(3)各模型數據
比較項目 ResNet-34 Inception_V3 MobileNet_V3_LARGE EfficientNet_V2_L
Paper Link Deep Residual Learning for Image Recognition Rethinking the Inception Architecture for Computer Vision Searching for MobileNetV3 EfficientNetV2: Smaller Models and Faster Training
Year 2015 2015 2019 2021
acc@1 (on ImageNet-1K) 73.3% 77.3% 74% 85.8%
acc@5 (on ImageNet-1K) 91.4% 93.5% 91.34% 97.8%
Num of params 21797672 (2179萬) 27161264 (2716萬) 5483032 (548萬) 118515272 (1.1億)
min size(heightxwidth) 1x1 75x75 1x1 33x33

數據來源

(4)結論

光找到上面這個表格&整理數據就快一小時了(暈),別問為什麼沒放VGG、SqueezeNet等模型,實在時間不夠對這幾個又沒特別feeling(好任性:D,加上若太多欄位會很難比較XD

經過上方表格數據統整後,決定要學習和實作的預訓練模型如下:

1.早期具有準確率突破性進展的模型: ResNet-34
2.準確率最高的模型: EfficientNet_V2_L
(如果有時間,想研究MobileNet_V3_LARGE,因為模型參數數量明顯少很多

2.ResNet解決的問題:

ResNet為2015年多項競賽的冠軍(ILSVRC、ImageNet detection, ImageNet localization,
COCO detection, and COCO segmentation in ILSVRC & COCO),該模型以VGG模型為基礎做擴展,透過新的網路設計(殘差學習,Residual Learning)能成功實踐過去研究者想要增加神經網路層深度以提升預測表現的目標。由ResNet提出的residual learning設計使深層網路更容易訓練,進而開啟超深層網路模型的時代。

在該模型發表前,若直接加深神經網路層數,往往會造成訓練上的困難: 退化(degradation)
隨著層數增加,預測誤差反而升高:深層神經網路模型「退化問題」,
針對這個問題,ResNet發明者有在論文中有進行實驗,在採用Batch Normalization、drop out等常見有效防止過擬合、梯度消失或爆炸的技巧後,仍存誤差升高的問題,對此作者定義為「退化」。

3.ResNet模型介紹:

(1)模型網路架構(Network Architectures)


圖片來源

圖片來源

由上圖可知,在ImageNet dataset預測表現上,ResNet相較過去VGG(19層)的多了8倍的深度(152層),且能有效收斂深層模型運算,提升預測準確率。

(2)Residual Learning


圖片來源
[輸入:F(x)] 在ResNet轉變成 [輸入 + 殘差:F(x) + x],

  • 由上圖可知,該設計為在VGG模型上新增殘差連結(shortcut connections,上圖中的identity),可視為建立一條捷徑跳過當層(當殘差為0),該方法不會增加額外的模型參數也不增加計算複雜度(computational complexity)。
  • 若殘差為0,代表多的這一層沒有學到新特徵,會直接跳過Residual Block的中間層;若殘差不為0,代表模型在這一層學習到新特徵,也因此在很深層的神經網路能學習到更複雜的特徵,有機會能提升預測表現並有效防止深層網路出現退化現象。
(3)Identity Mapping by Shortcuts

若某一層的殘差為0,代表該層並沒有學習到新特徵,僅是複製前一層輸出資料作為該層的輸出資料,此情況則稱為「恆等映射」(identity mapping),這樣情況下就能讓深層模型類似淺層模型,避免發生退化現象。

(4)ResNet兩種殘差單元: Building block & Bottleneck


圖片來源
根據上圖共有兩種殘差單元分別採用在較淺層模型(ResNet-34)和較深層的模型(ResNet-50/101/152),分別稱為building blockbottleneck building block(bottleneck)。在深層模型中容易遇到高維度輸入輸出層串接,若直接用building block,將會導致運算量過大。透過bottleneck設計,將一個3x3卷積核拆分成一組(1x1,3x3,1x1)卷積核,能有效減少模型參數使用量。


Part3:專案進度

完成ResNet模型架構學習,後續將使用該模型的Pytorch預訓練模型在競賽資料上操作。

Part4:下一步

學習EfficientNet_V2_L模型架構。


參考:

心得小語:
凌晨3:00起床真滴累,主要是每天都習慣凌晨1:00睡,昨天拖到22:00才上床休息,還是翻滾好久睡不著XDD 但今天的表演很讚,非常難得得經驗呢~~ 下午補完眠後就開始跟論文奮鬥,終於有點頭緒了,明天繼續學習囉!
今日工時: 50mins*4

成功是每個微小努力的加總,並每天不斷地重覆
Success is the sum of small efforts, repeated day-in and day-out.


上一篇
D16-中繼站:前半段賽程回顧&後半段賽程規劃
下一篇
D18-影像識別經典模型簡介3rd_EfficientNet
系列文
菜鳥工程師第一個電腦視覺(CV)專案-農作物影像辨識競賽32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言